package com.example.mobile0123456789hwh0614;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.List;

public class MyDataAdapter {
    private MySQLiteOpenHelper openHelper;//声明数据库助手变量
    private SQLiteDatabase database;//声明数据库对象变量
    public void openDB(Context context){
//        创建数据库助手对象
        openHelper=new MySQLiteOpenHelper(context,"student.db",null,1);
//        获得可写获可读数据库对象
        try{
            database=openHelper.getWritableDatabase();
        }catch (Exception e){
            database=openHelper.getReadableDatabase();
        }

    }
    public void closeDB(){
        if(database!=null){
            database.close();
            database=null;
        }
        if(openHelper!=null){
            openHelper.close();
            openHelper=null;
        }

    }
//    查询所有数据
    public List<Users> QueryAll(Context context){
        List<Users> usersList=new ArrayList<>();
        openDB(context);//打开数据库
        Cursor cursor = database.query("users", null, null,
                null, null, null, null);//查询全部数据
        // 调用游标的方法，循环读取数据
        if(cursor.moveToFirst()){//判断有没第一条数据
            do{//do循环
                int id=cursor.getInt(0);//读第1列数据，编号为0
                String name=cursor.getString(1);//读第2列数据，编号为1
                int age= cursor.getInt(2);
                float score=cursor.getFloat(3);
                usersList.add(new Users(id, name, age, score));//添加到集合类中
            }while (cursor.moveToNext());//判断有没下一条数据
        }
        cursor.close();// 关闭游标
        closeDB();//关闭数据库
        return usersList;//返回结果
    }
//    添加数据
    public long insert(Context context,Users user){
        openDB(context);//打开数据库
        ContentValues values = new ContentValues();//定义键值对数据
        values.put("name", user.getName());//设置数据
        values.put("age", user.getAge());
        values.put("score", user.getScore());
        long result = database.insert("users", null, values);
        closeDB();//关闭数据库
        return result;//返回结果
    }
//    根据ID删除数据
    public int delete(Context context,int id){
        openDB(context);//打开数据库
        int result=database.delete("users","_id=?",new String[]{String.valueOf(id)});
        closeDB();//关闭数据库
        return result;
    }
//    根据ID更新数据
    public int update(Context context,int id,Users user){
        openDB(context);//打开数据库
        ContentValues values = new ContentValues();
        values.put("name", user.getName());//设置数据
        values.put("age", user.getAge());
        values.put("score", user.getScore());
        int result=database.update("users",values,"_id=?",new String[]{String.valueOf(id)});
        closeDB();//关闭数据库
        return result;
    }

}
